<!DOCTYPE HTML>
<html>
<head>
<title>DetectHiddenWindows | AutoHotkey</title>
<meta name="description" content="The DetectHiddenWindows command determines whether invisible windows are "seen" by the script." />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>DetectHiddenWindows</h1>

<p>设置脚本是否可以 "看见" 隐藏的窗口.</p>

<pre class="Syntax"><span class="func">DetectHiddenWindows</span>, OnOff</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>OnOff</dt>
  <dd><p><strong>On</strong>: 能检测到隐藏窗口.</p>
    <p><strong>Off</strong>: 这是默认的. 除了 <a href="WinShow.htm">WinShow</a> 命令, 其他都不会检测到隐藏窗口.</p>
    <p><span class="ver">[v1.1.30+]:</span> 可以分别使用十进制值 1 和 0 代替 On 和 Off.</p>
</dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>在一些情况下打开 DetectHiddenWindows 可能会让脚本运行更困难, 因为有些隐藏的系统窗口可能意外地匹配上您想要操作的另一个窗口的标题或文本. 因此在大多数脚本中应该让此设置保持关闭. 然而, 当您希望直接操作隐藏窗口而不想首先使用 <a href="WinShow.htm">WinShow</a> 显示这些窗口时, 则需要打开此设置.</p>
<p>除 <a href="WinShow.htm">WinShow</a> 外的所有窗口命令, 内置函数和控制流语句都会受此设置的影响, 包括 <a href="WinActivate.htm">WinActivate</a>, <a href="WinActive.htm">WinActive()</a>, <a href="IfWinActive.htm">IfWinActive</a>, <a href="WinWait.htm">WinWait</a>, <a href="WinExist.htm">WinExist()</a> 和 <a href="IfWinExist.htm">IfWinExist</a>. 与之相比, 即使没有检测到隐藏窗口, <a href="WinShow.htm">WinShow</a> 也总是能让它们显示.</p>
<p>使用 <a href="../misc/WinTitle.htm#ahk_id">ahk_id 方法</a>或作为<a href="../misc/WinTitle.htm#LastFoundWindow">上次找到的窗口</a>访问控件或子窗口时, 可以不需要打开 DetectHiddenWindows. 使用 <code>Gui +<a href="Gui.htm#LastFound">LastFound</a></code> 访问 GUI 窗口时, 同样是不需要的.</p>
<p><span class="ver">[v1.1.32+]:</span> Cloaked(非显示) 窗口被视为隐藏的. 在 Windows 8 中引入的 Cloaked 窗口是指处于非活动状态的虚拟桌面或 UWP 应用程序的窗口, 这些应用程序被挂起是为了提高性能, 或者更准确地说, 是为了减少内存消耗. 在 Windows 10 中, 这些进程在任务管理器中以绿色的叶子指示. 此类窗口在视图中是隐藏的, 但是可能仍具有 WS_VISIBLE 窗口样式. 在 v1.1.32 之前, 所有拥有 WS_VISIBLE 样式的窗口都被视为是可见的.</p>
<p>内置变量 <strong>A_DetectHiddenWindows</strong> 包含了当前设置(On 或 Off).</p>
<p>每个新运行的<a href="../misc/Threads.htm">线程</a>(例如 <a href="../Hotkeys.htm">热键</a>, <a href="Menu.htm">自定义菜单项</a>或<a href="SetTimer.htm">定时</a>子程序) 都会以此命令的默认设置开始. 通过在脚本的自动执行段(脚本的顶部) 使用此命令可以改变这个默认设置.</p>
<h2 id="Related">相关</h2>
<p><a href="DetectHiddenText.htm">DetectHiddenText</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 开启检测隐藏窗口.</p>
<pre>DetectHiddenWindows, On</pre>
</div>

</body>
</html>